/*
*Copyright 2021-2023 NERCIS
*
*Licensed under the Apache License, Version 2.0 (the "License");
*you may not use this file except in compliance with the License.
*You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*Unless required by applicable law or agreed to in writing, software
*distributed under the License is distributed on an "AS IS" BASIS,
*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*See the License for the specific language governing permissions and
*limitations under the License.
*/

package cn.ac.nercis.pes.model.bo.doc;

import cn.ac.nercis.pes.model.bo.doc.common.evaluation.EvaluationBasisBO;
import cn.ac.nercis.pes.model.bo.doc.common.evaluation.EvaluationProcessBO;
import cn.ac.nercis.pes.model.bo.doc.common.evaluation.EvaluationRangeBO;
import cn.ac.nercis.pes.model.bo.doc.report.evaluation.*;
import cn.ac.nercis.pes.model.bo.doc.report.problem.ProblemSuggestBO;
import cn.ac.nercis.pes.model.bo.doc.report.stat.TargetStatBO;
import cn.ac.nercis.pes.model.bo.doc.report.system.*;
import cn.ac.nercis.pes.model.bo.doc.common.table.EvaluatorBO;
import cn.ac.nercis.pes.model.bo.doc.report.unit.EvaluationUnitBO;
import cn.ac.nercis.pes.model.bo.doc.report.unit.TestedUnitBO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 评估报告数据
 * @author zpy
 * @version 1.0.0
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReportDataBO {
    /**
     * 报告编号
     */
    private String reportCode;
    /**
     * 被测单位+系统名称
     */
    private String testedUnitSystemName;
    /**
     * 委托单位
     */
    private String entrustedUnitName;
    /**
     * 是否有委托单位
     */
    private Boolean hasEntrustedUnitName;
    /**
     * 报告时间（yyyy年MM月）
     */
    private String reportDate;
    /**
     * 报告时间（yyyy年MM月dd日）
     */
    private String reportDateInDay;
    /**
     * 评估结论
     */
    private String evaluationResult;
    /**
     * 综合得分
     */
    private String totalScore;
    /**
     * 报告分发范围
     */
    private String distributionRange;
    /**
     * 被测单位信息
     */
    private TestedUnitBO testedUnit;
    /**
     * 测评单位信息
     */
    private EvaluationUnitBO evaluationUnit;
    /**
     * 系统信息
     */
    private SystemBO system;
    /**
     * 网络安全等级保护测评情况
     */
    private GradeProtectionBO gradeProtection;
    /**
     * 系统服务情况
     */
    private ServiceConditionBO serviceCondition;
    /**
     * 系统服务领域情况
     */
    private ServiceAreaBO serviceArea;
    /**
     * 系统网络平台
     */
    private NetworkPlatformBO networkPlatform;
    /**
     * 系统投入运行情况
     */
    private RunConditionBO runCondition;
    /**
     * 系统互联情况
     */
    private InterconnectionBO interconnection;
    /**
     * 系统是否依赖不在本系统范围内的云平台运行
     */
    private CloudSystemBO cloudSystem;
    /**
     *系统是否具有密码应用方案
     */
    private PASchemeBO paScheme;
    /**
     *系统使用的密码产品情况
     */
    private PPSituationBO ppSituation;
    /**
     * 系统使用的密码算法
     */
    private UseAlgorithmBO useAlgorithm;
    /**
     * 测评指标统计信息
     */
    private TargetStatBO targetStat;
    /**
     * 安全问题及改进建议
     */
    private ProblemSuggestBO problemSuggest;
    /**
     * 测评依据信息
     */
    private EvaluationBasisBO evaluationBasis;
    /**
     * 测评过程
     */
    private EvaluationProcessBO evaluationProcess;
    /**
     * 测评组人员
     */
    private List<EvaluatorBO> evaluators;
    /**
     * 被测系统情况
     */
    private SystemSituationBO systemSituation;
    /**
     * 测评范围与方法
     */
    private EvaluationRangeBO evaluationRange;
    /**
     * 单元测评
     */
    private UnitEvaluationBO unitEval;
    /**
     * 整体测评
     */
    private OverallEvalBO overallEval;
    /**
     * 风险分析
     */
    private RiskAnalysisBO riskAnalysis;

    /**
     * 附录A 测评结果记录信息
     */
    private AppendixOneBO appendix;

    /**
     * 附录B 密评活动有效性证明记录
     */
    private AppendixTwoBO appendixB;
}
